package com.swordget.dao;

import com.swordget.entity.ColumnDesign;
import com.swordget.entity.TableDesign;

import java.sql.SQLException;
import java.util.List;

/**
 * @Author: David
 * @Date: Created in 15:57 2020/3/27
 * @Description: ${DESCRIPTION}
 * @Modified By:
 * @Version: ${VERSION}
 */
public interface TableManagerDao {

    /**
     * 判断表是否存在 dao 层接口
     * @param tableName 表名
     * @param userName 用户名
     * @return
     */
    boolean dataTableExists(String tableName, String userName);

    /**
     * 获取用户表空间 dao 层接口
     * @param username 用户名
     * @return
     */
    String getTableSpace(String username);

    /**
     * 创建表 dao 层接口
     * @param tableDesign 表结构
     * @param columnDesigns 字段结构
     * @param serial 主键结构
     * @param tableSpace 表空间
     * @param username 用户名
     * @param loginId 操作用户
     * @return
     */
    boolean createTable(TableDesign tableDesign, List<ColumnDesign> columnDesigns, ColumnDesign serial, String tableSpace, String username, String loginId);


    /**
     * 创建表 dao 层接口
     * @param tableDesign 表结构
     * @param loginId 操作用户
     * @return
     */
    boolean editTable(TableDesign tableDesign, String loginId);

    /**
     * 删除表  dao 层接口
     * @param tableName 表名
     */
    boolean dropTable(String tableName);

    /**
     * 初始化表
     * 在表定义中插入新建表定义信息
     * 在表详细信息中插入表详细信息
     * @param tableDesign
     * @param columnDesigns
     * @param loginId
     * @param username
     * @return
     * @throws SQLException
     */
    boolean initTable(TableDesign tableDesign, List<ColumnDesign> columnDesigns, String loginId, String username);

    /**
     *  表中是否存在数据
     * @param tableName 表名
     * @return
     */
    boolean existsData(String tableName);

    /**
     * 分页查询表结构设计
     * @param rows 行数
     * @param page 页数
     * @return
     */
    List<TableDesign> findTableDesignByPage(int rows, int page, String tableEn, String tableCn);

    /**
     * 查找系统管理的总表数
     * @return
     */
    int findTotal();

    boolean check(String checkSQL);

    boolean updateCheckFile(String absolutePath, long lastModified, String tableId);

    TableDesign findOne(String tableId);
}




